﻿
/* *********************************************************************** *\
 * Disclaimer                                                              *
\* *********************************************************************** */

This mod requires altering minecraft.jar, and SMP may not work with this mod
installed. This mod can add new content, do not load worlds with this new
content if this mod is not installed. I am not responsible for any damage done
to your computer, worlds, or your copy of Minecraft. That said, backup your
worlds and bin folder!

/* *********************************************************************** *\
 * Requirements                                                            *
\* *********************************************************************** */

. ModLoader Beta 1.5_01v3
. Knowledge of installing minecraft mods.

/* *********************************************************************** *\
 * BetterBlocks v3.0 for Minecraft 1.5_01                                  *
\* *********************************************************************** */

    This mod modifies existing blocks to either fix bugs, or add new
behaviors. It will do so in such a way that any of it's changes can be undone
by installation of another mod with little to no side-effects other than lost
features/bug fixes.

This mod will NEVER...
    . Add new items (armor, tools, weapons, etc...)
    . Add new blocks, by default (must be enable by configuration option)
    . Add new sprites (item/terrain textures)

/* *********************************************************************** *\
 * New Content                                                             *
\* *********************************************************************** */

Doors [v3.0]
            . # #
            . # #       # = Planks or Iron Ingots
            . # #
    . Doors are supported by the block below and the 4 blocks near the hinge.
    . Will open when redstone power is applied, really open not just rotate.
        . The door will examine it's surroundings to determine how to open.
    . Some powered door configurations (include two doors facing different
            directions to make a double door) will no longer work correctly.

Gates [v3.0]
            . . .
            . # #       # = Wooden or Iron Fence
            . . .
    . A gate that will run east-west or north-south.
    . Must be supported by a solid block or fence on one side.
    . Cannot jump over (like fences)
    . Will open when redstone power is applied.
    . All fences will connect to any gate.

Hatches [v3.0]
            . . .
            . # .       # = Wooden or Iron Door (Makes 2x)
            . . .
    . A block that will seal the bottom part of a block.
    . Must be supported by a solid block under, hinge side, or beside.
    . Will rotate up when redstone power is applied.

Logs [v3.0]
    Logs can now be placed horizontally based on side.

Hardness Modification [v3.0]
    Modified the hardness (vs Mining/Harvesting) of various blocks.
    . Normal Blocks
        . Cloth                  (0.8 -> 0.6)
        . Sandstone              (0.8 -> 1.0)
        . Lapis Block            (3.0 -> 2.5)
        . Gold Block             (stays  3.0)
        . Iron Block             (5.0 -> 4.0)
        . Diamond Block          (stays  5.0)
        . Obsidian               (10  -> 5.0) [no tool is effective]
        . Brick Block            (2.0 -> 1.5)
        . Fence, Slabs, Stairs   (2.0 -> 1.5) [not the Better Blocks kind]
        . Workbench              (2.5 -> 2.0)
        . Furnace, Dispensers    (3.5 -> 2.5)
        . Jukebox                (2.0 -> 1.0)
    . Better Blocks
            NOTE: Values are relative to the material their made of.
        . Slabs (single and double) are a 33% eaiser to harvest.
        . Fences and Stairs are a 33% harder to harvest.
        . Doors are 66% harder to harvest (but respond to tools properly).

Resistance Modification [v3.0]
    Modified the resistance (vs Explosions) of various blocks.
    . Normal Blocks
        . Stone                  (10 -> 15)
        . Lapis Block            ( 5 -> 15)
        . Iron Block             (10 -> 20)
        . Diamond Block          (10 -> 30)
        . Obsidian               (2000 -> 95)
        . Brick Block            (10 -> 15)
        . Fence                  ( 5 -> 13) [non-Better Blocks kind]
        . Slabs                  (10 ->  6) [non-Better Blocks kind]
    . Better Blocks
            NOTE: Values are relative to the material their made of.
        . Slabs (single and double) are 33% less resistant to explosion.
        . Doors are 33% more resistant to explosion.
        . Fences are 33% more resistant to explosion.

Torches [v2.5]
    [v3.0] Torches can be placed on fences (top and sides).
    Torches can be placed on half-blocks (and look correct when on top).
        WARNING: Redstone torches on a single slab do not work as if they were
                 on a solid block.
    Torches can be placed on the sides of stairs (but not on top).
    Torches can be placed on glass.

Stairs [Since v2.0]
    [v3.0] Have correct texture alignment.
    Stairs will form corners when placed next to each other.
    Stairs will render upsidedown when placed below a solid or half-block
        (and optinally above stairs.)
    Stone stairs can be made to look like half-blocks (in configuration.)

    New                     # . .
    + Stone                 # # .   # = Block
    + Log (Spruce Only)     # # #
    + Sandstone
    + Iron (using Iron Ingots OR Iron Blocks)
    + Diamond (using Diamonds OR Diamond Blocks)
    + Brick (using Bricks OR Brick Blocks)

    New [v2.2]
        Enable by setting "addNewBlocks" to "true" in configuration.
    + Obsidian
    + Snow (using Snowballs OR Snow Blocks)
    + Gold (using Gold Ingots OR Gold Blocks)
    + Lapis (using Lapis Dye OR Lapis Blocks)
    + Moss Stone
    + Netherrack
    + Log (Pine)
    + Log (Birch)

    New [v2.5]
        Enable by setting "addNewBlocks" to "true" in configuration.
    + All Wool Colors

Fences [Since v1.0]
    Fences will connect to neighboring solid blocks.
    Fences will connect to neighboring stair backs.

    New                         . . .
    + Stone                     # # #   # = Block
    + Cobblestone               # # #
    + Moss Stone
    + Obsidian
    + Netherrack
    + Sandstone
    + Iron (using Iron Ingots)
    + Gold (using Gold Ingots)
    + Diamond (using Diamond Ingots)
    + Lapis (using Lapis Dye)
    + Brick (using Bricks)
    + Any Log

New Slabs [Since v1.0]
    [v3.0] Have correct texture alignment.
    [v3.0] Will render upside-down when under a solid block.

    + Moss Stone                . . .
    + Obsidian                  # # #   # = Block
    + Netherrack                # # #
    + Iron (using Iron Ingots OR Iron Blocks)
    + Gold (using Gold Ingots OR Gold Blocks)
    + Diamond (using Diamond Ingots OR Diamond Blocks)
    + Lapis (using Lapis Dye OR Lapis Blocks)
    + Brick (using Bricks OR Brick Blocks)
    + Snow (using Snowballs OR Snow Blocks) [v2.0]
    + Any Log

    New Blocks [v2.5]
        Enable by setting "addNewBlocks" to "true" in configuration.
    + All Wool Colors

Unmake Fences
                                . . .
                                . # .   # = Fence
                                . . .

Unmake Slabs
                                . . .
                                . # .   # = Slab
                                . # .

Unmake Stairs
                                . . .
                                . # .   # = Stairs
                                . . .

/* *********************************************************************** *\
 * Minecraft Bugs Fixed                                                    *
\* *********************************************************************** */

. [v1.0] Fences/Slabs can be harvested faster with the proper tools
    (Axe for Planks/Log, Pickaxe for Others)
. [v1.0] Fences/Slabs react correctly to explosions
    (Obsidian Fence/Slab cannot be destroyed by TNT/Creeper)
. [v2.0] Stairs can be harvested faster with the proper tools.
. [v2.5] Fences have smaller block bounds if possible.
. [v2.5] Slabs can be placed on another even when under another block.
. [v3.0] Various rendering bugs related to texture alignment (stairs, slabs, etc.)

/* *********************************************************************** *\
 * Planned Features                                                        *
\* *********************************************************************** */

. Grass
    + [ WILL] Integrate a form of Better Grass.

. Fire/Lava
    + [ WILL] Allow fire (and lava) to ignite all wooden objects.
    + [MAYBE] Make lava burn normally non-flamable blocks (sandstone, dirt, etc...)

. Liquids
    + [MAYBE] Allow liquids (water, lava) to flow through open doors and fences.

. Open to sugestions...

/* *********************************************************************** *\
 * Configuration                                                           *
\* *********************************************************************** */

addNewBlocks                                                [DEFAULT: false]
    Set to true to enable adding new blocks (Block ID's are configurable)

    slabsMoreID1            (DEFAULT: 113)
    slabsMoreID2            (DEFAULT: 114)
        - Adds 8 new stair types.
    stairsMoreID1           (DEFAULT: 115)
    stairsMoreID2           (DEFAULT: 116)
        - Adds 8 new stair types.
    stairsWoolID1           (DEFAULT: 117)
    stairsWoolID2           (DEFAULT: 118)
    stairsWoolID3           (DEFAULT: 119)
    stairsWoolID4           (DEFAULT: 120)
        - Adds 16 new stair types.

recipeAddReverse                                            [DEFAULT: true]
    Adds recipes to unmake slabs, fences, and stairs.



stackSizeFood                                               [DEFAULT: 8]
stackSizeVehicle                                            [DEFAULT: 4]
stackSizePlacable                                           [DEFAULT: 16]
    Sets the number allowed for various stack sizes.



fenceConnectSolidBlocks                                     [DEFAULT: true]
    Fences will connect to solid blocks excluding soil, and blocks
    made of the same material.

fenceConnectSameMaterial                                    [DEFAULT: true]
    Fences connect to blocks of the same material. This includes
    normal blocks (e.g. brick fence -> brick block) and double
    stacked slabs (e.g. brick fence -> double brick slab).

fenceConnectSoilBlocks                                      [DEFAULT: false]
    Fences connect to soil blocks (dirt, grass, sand, gravel,
    farmland)

fenceConnectDifferentFence                                  [DEFAULT: false]
    Fences will connect to fences made of other materials
    (e.g. Brick Fence -> Netherrack Fence)



stairsInvertBelowSolid                                      [DEFAULT: true]
    Stairs will render upside down if placed below a solid block.

stairsInvertAboveStairs                                     [DEFAULT: false]
    Stairs will render upside down if placed above another stair block.

stairsFormCorners                                           [DEFAULT: true]
    Stairs will render as a corner depending on surrounding stair blocks.

stairsStoneLikeHalfBlock                                    [DEFAULT: false]
    Stone stairs will use the half-block textures.



slabsInvertBelowSolid                                       [DEFAULT: true]
    Slabs will invert below solid blocks (evan other single slabs.)

/* *********************************************************************** *\
 * Installation                                                            *
\* *********************************************************************** */

Windows:
    1) Open up "%appdata%", if you don't know how to do this, start>run, then
            type in %appdata%
    2) Browse to ".minecraft/bin"
    3) Open up "minecraft.jar" with WinRAR or 7zip.
        3a) Drag and drop all ModLoader files into the jar.
        3b) Drag all BetterBlocks files ending with a ".class" into the jar.
        3c) Delete the META-INF folder in the jar.
    4) Install any other mods you wish.
    5) OPTINALLY to change configuration
        5a) Run Minecraft ONCE (login, then exit)
        5b) Browse to "%appdata%/.minecraft/mods"
        5c) Edit "BetterBlocks.props" with a text editor (notepad) to
                configure.
    6) Play Minecraft, enjoy!

Macintosh:
    1) Go to Applications>Utilities and open terminal.
    2) Type in the following, line by line:
        > cd ~
        > mkdir mctmp
        > cd mctmp
        > jar xf ~/Library/Application\ Support/minecraft/bin/minecraft.jar
    3) Outside of terminal
        3a) Copy all ModLoader files into the "mctmp" directory.
        3b) Copy all BetterBlocks files ending with a ".class" into the "mctmp"
                directory.
    4) Back inside terminal, type in the following:
        > rm META-INF/MOJANG_C.*
        > jar uf ~/Library/Application\ Support/minecraft/bin/minecraft.jar ./
        > cd ..
        > rm -rf mctmp
            "mods" (it may already exist.)
    5) OPTINALLY to change configuration
        5a) Run Minecraft ONCE (login, then exit)
        5b) Browse to "Library/Application Support/minecraft/mods"
        5c) Edit "BetterBlocks.props" with a text editor to configure.
    6) Play Minecraft, enjoy!

/* *********************************************************************** *\
 * Version History                                                         *
\* *********************************************************************** */

Version 3.0 (for Minecraft 1.5_01):
    + Better Doors
        + Doors
            . Knows which way is open.
        + Gates
            . For fences
        + Hatches
            . For seals the bottom of a block.
            . Can be walked on when closed.
    + Better Logs
       . Can be placed horizontally.
    + Hardness (vs Mining/Harvesting) and Resistance (vs Explosion) tweaks
    + Added Configuration
       'useBetterDoors'
       'useBetterLogs'
       'slabsInvertBelowSolid'
    * Fixed BetterBlocks Bugs
       . Configuration now uses native line-endings.
       . Wool stairs and slabs have proper step sound.
       . Explosion of any BetterBlock no longer crashes the game.
       . Initialization & Configuration information is now logged to 'ModLoader.txt'.
    * Fixed Minecraft Bugs
       . Textures now align properly on Better Stairs and Slabs.
    - Removed Configuration
        'torchesOnGlass' torches can always be on glass now.
Version 2.5 (for Minecraft 1.5_01):
    + Minecraft Update
Version 2.5 (for Minecraft 1.4_01):
    + Torches can be placed on fences, slabs, and stairs (optinally on glass).
    + Fences can connect to the back's of stairs.
    + Confiugration will auto-generate and auto-update.
    + Added New Blocks (see Configuration: addNewBlocks)
        16 new stair types (one for each wool color)
        16 new slab types (one for each wool color)
    * Fixed Minecraft Bugs...
        . Identical slabs can be placed on another even when under another
          block (or torch).
    + Added Configuration
        'useBetterFences'
        'useBetterRedstoneTorches'
        'useBetterSlabs'
        'useBetterStairs'
        'useBetterTorches'
            Use to selectivly disable Better Blocks.
        'stackSizeFood' (pork, apples, etc.)
        'stackSizeBucket'
        'stackSizeVehicle' (boat, minecrats, saddle)
        'stackSizePlacable' (door, sign, bed)
            Changes stack sizes of various items/blocks.
        'torchesOnGlass'
            Set to true to allow torches to be placed on glass.
    + Added Configuration (Block IDs)
        'slabDoubleWoolID' (default 113)
        'slabSingleWoolID' (default 114)
            Enables wool slabs (set either to zero to disable both.)
        'stairsWoolID1' (default 117)
        'stairsWoolID2' (default 118)
        'stairsWoolID3' (default 119)
        'stairsWoolID4' (default 120)
            Enables wool stairs.
    - Removed Configuration
        'stairsInvertBelowStairs'
            'stairsInvertBelowSolid' now does the same thing
Version 2.2 (for Minecraft 1.4_01):
    + Added New Blocks (see Configuration: addNewBlocks)
        8 new stair types
    + Added Configuration (Block IDs)
        'stairsMoreID1' (default 115)
            Obsidian, Snow, Gold, Lapis
        'stairsMoreID2' (default 116)
            Moss Stone, Netherrack, Pine Log, Birch Log
    * Stairs
        fixed problem with TooManyItems
        (alternate) stone stairs now harvest at the correct speed
    * Corrected Internal Version Number (was still 1.0)
Version 2.1 (for Minecraft 1.4_01):
    + Added Configuration
        'stairsInvertBelowStairs'
        'stairsStoneLikeHalfBlock'
    * Stairs
        Will now invert if under a half block.
Version 2.0 (for Minecraft 1.4_01):
    + New Slab Block
        Snow
    + New Stair Blocks...
        Log (Spruce Only)
        Iron, Diamond
        Stone, Sandstone, and Brick
    + Stair blocks can render as corners and upside-down
    * Fixed Minecraft Bugs...
        . Stairs can be harvested faster with the proper tools.
Version 1.0 (for Minecraft 1.4_01):
    + New Slab Blocks...
        Log (Spruce, Pine, Birch),
        Iron, Gold, Diamond, Lapis,
        Brick, Moss Stone, Obsidian, and Netherrack
    + New Fence Blocks...
        Stone, Cobblestone, Sandstone
        Log (Spruce, Pine, Birch),
        Iron, Gold, Diamond, Lapis,
        Brick, Moss Stone, Obsidian, and Netherrack
    + Fence Blocks can connect to other blocks (configurable)
    * Fixed Minecraft Bugs...
        . Fences/Slabs can be harvested faster with the proper tools
            (Axe for Planks/Log, Pickaxe for Others)
        . Fences/Slabs react correctly to explosions
            (Obsidian Fence/Slab cannot be destroyed by TNT/Creeper)

